const {ccclass, property} = cc._decorator;

@ccclass
export default class Choose_load extends cc.Component {

    @property({displayName: "场景名称", tooltip: "场景名称"})
    scene_name: string = "";

    @property({displayName: "加载进度条父节点", tooltip: "加载进度条父节点", type: cc.Node})
    load_parent: cc.Node = null;

    @property({displayName: "所有的选关按钮", tooltip: "所有的选关按钮", type: cc.Node})
    all_choose_btn: cc.Node = null;

    @property({displayName: "精灵大陆文字", tooltip: "精灵大陆文字", type: cc.Node})
    text: cc.Node = null;

    @property({displayName: "显示进度的文字", tooltip: "显示进度的文字", type: cc.Label})
    load_progress_lb: cc.Label = null;

    @property({displayName: "小提示文字", tooltip: "小提示文字", type: cc.Label})
    hint_lb: cc.Label = null;

    @property({displayName: "小提示", tooltip: "小提示，代码会随机在里面抽取一个显示到文字上", type: cc.String})
    hint: string[] = [];

    @property({displayName: "显示进度的填充精灵", tooltip: "显示进度的填充精灵", type: cc.Sprite})
    load_progress_sr: cc.Sprite = null;


    // 是否开始加载
    is_start_load: boolean = false;


    onLoad () {
        // 随机数，并且取整，目的是随机显示小提示
        let num = Math.floor(this.randomNumber(0, this.hint.length - 1));
        // 随机显示小提示
        this.hint_lb.string = "小提示：" + this.hint[num];
    }

    start () {
        // 开始预加载Game场景
        cc.director.preloadScene("Game");
    }


    // 开始加载
    go () {
        // 显示进度条和文字
        this.load_parent.active = true;
        this.text.active = true;
        // 隐藏所有选关按钮
        this.all_choose_btn.active = false;

        // 开始加载
        this.is_start_load = true;
    }

    /* update (dt: number) {
        // 如果开始加载
        if (this.is_start_load == true) {
            // 开始填充进度条并更新文字显示  文字显示保留两位小数
            // cc.log("开始加载");
            this.load_progress_sr.fillRange += dt / this.load_time;
            this.load_progress_lb.string = ((this.load_progress_sr.fillRange) * 100).toFixed(2) + "%";
            if (this.load_progress_sr.fillRange >= 1) {
                this.scheduleOnce(function () {
                    cc.director.loadScene(this.scene_name);
                    cc.log("加载完成跳转场景");   
                }, 0.8); 
            }
        }
    } */

    update () {
        // 如果开始加载
        if (this.is_start_load == true) {
            // 调用load加载函数
            this.load();
            // 为了避免重复调用，设置为不加载
            this.is_start_load = false;
        }
    }

    // 加载函数
    load () {
        // 文字显示为0.00%
        this.load_progress_lb.string = "0.00" + "%";
        // 精灵填充也为0
        this.load_progress_sr.fillRange = 0;
        // 预加载Game场景
        cc.director.preloadScene("Game", (completedCount, totalCount, item) => {
            // 获取当前进度
            let p = completedCount / totalCount;
            // 将进度显示在文字和精灵填充上
            this.load_progress_sr.fillRange = p;
            // 文字最终显示为 进度 * 100 保留两位小数 + "%"
            this.load_progress_lb.string = (p * 100).toFixed(2) + '%';
            // 打印log
            // console.log(this.load_progress_lb.string);
        },() => {
            // 加载完成后跳转场景
            cc.director.loadScene("Game");
        });
    }

    // 封装好的随机数函数，min为最小值，max为最大值
    // 作用：输入两个number，返回一个number，返回的number大于min小于max
    randomNumber(min : number, max : number): number{
        return Math.round(Math.random() * (min - max) + max);
    }

}